﻿//#include<iostream>
//using namespace std;
//int main()
//{
//	cout << "hello world!" << endl;
//	return 0;
//}
//::指定要找的域
//using std::cout;
//using std::endl;
//using std::cin;
//int a = 8;
//::左边什么都没有是全局域
//namespace bit
//{
//	int a = 2;
//}
//int main()
//{
//	int a;
//	//cin >> a;输入a
//	cout << ::a << endl;
//	return 0;
//}
//缺省参数
//值为先c后b再a
//int add(int a = 10, int b = 20, int c = 30)
//{
//	return a + b + c;
//}
//如果有什声明定义就不要写
//int add(int a=10, int b=20, int c=30);
//int add(int a , int b , int c)
//{
//	return a + b + c;
//}
//int main()
//{
//	//传参必须先a后b再c
//	cout << add() << endl;
//	cout << add(1) << endl;
//	cout << add(1, 2) << endl;
//	cout << add(1,2,3) << endl;
//	//cout << add(1,,2) << endl;错的
//	return 0;
//}
//int main()
//{
//	int a = 0;
//	// 引⽤：b和c是a的别名
//	int& b = a;
//	int& c = a;
//	// 也可以给别名b取别名，d相当于还是a的别名
//	int& d = b;
//	++d;
//	// 这⾥取地址我们看到是⼀样的
//	cout << a << endl;
//	cout << b << endl;
//	cout << c << endl;
//	cout << d << endl;
//	return 0;
//}
// 打印数组
//#include<iostream>
//using namespace std;
//int main()
//{
//	int a[10] = {0,1,2,3,4,5,6,7,8,9 };
//	for (int i = 0; i <10; i++)
//	{
//		cout << a[i] << endl;
//	}
//	return 0;
//}
// 数据的输入和输出
//#include<iostream>
//using namespace std;
//int main()
//{
//	int i;
//	double d;
//	cin >> i;
//	cin >> d;
//	//cin>>i>>d;
//	cout << i <<" " << d;
//	return 0;
//}
// 引用就是给变量取了个别名
//void swap(int* p1, int* p2)
//{
//	int a = *p1;
//	*p1 = *p2;
//	*p2 = a;
//}
////swap(&x, &y);
//void swap_(int& p1, int& p2)
//{
//	int a = p1;
//	p1 = p2;
//	p2 = a;
//}
////swap(x,y)
//#include<iostream>
//using namespace std;
//int main()
//{
	//int x = 0;
	//int& r1 = x;//r1就是x的别名，r1可以改变x
	//int& r2 = r1;//r2是r1的别名
	//const int x = 10;
	//int& r1 = x;//x不可以改变，但是r1可以改变。
	//const int x = 10;
	//const int& r1 = x;//x不可以改变，但是r1可以改变，加上const就可以了。
	/*double x = 1.1;
	const int& r1 = x;*///double他是精度高可以转换成int类型的
	//权限可以缩小但是不可以放大。
//	return 0;
//}
//#define add(a,b) ((a)+(b))
//宏是没有分号的；
//所有的都要加括号
//inline int add(int a, int b)
//{
//	return a + b;
//}
//就代表宏add方便和不用加括号
// 
//在c++中NULL代表0不代表指针
//如
//f(0)等价于f（NULL）
//要用int*类型的函数就要用nullptr即f(nullptr)
//类和对象
//隐含的this指针
//class Date
//{
//public:
//	void print()
//	{
//		cout <<this-> _years << "/" << this->_month << "/" <<this-> _days << endl;
//	}
//	void Init(int years, int month, int days)
//	{
//		this->_years = years;
//		this->_month = month;
//		this->_days = days;
//	}
//private:
//	int _years;
//	int _month;
//	int _days;
//};
//#include<iostream>
//using namespace std;
//class Date
//{
//public:
//	void print()
//	{
//		cout << _years << "/" << _month << "/" << _days << endl;
//	}
//	/*void Init(int years, int month, int days)
//	{
//		_years = years;
//		_month = month;
//		_days = days;
//	}*/
//	//无参数构造
//	Date()
//	{
//		_years = 1;
//		_month = 1;
//		_days = 1;
//	}
//	//带参数构造
//	Date(int years, int month, int day)
//	{
//		_years = years;
//		_month = month;
//		_days = day;
//	}
//	//全缺省构造
//	/*Date(int years = 1, int month = 1, int day = 1)
//	{
//		_years = years;
//		_month = month;
//		_days = day;
//	}*/
//private:
//	int _years;
//	int _month;
//	int _days;
//};

//int main()
//{
//
//	Date d1(2025, 9, 1);
//	d1.print();
//	Date d2;
//	d2.print();
//	//Date d3;
//
//	
//	return 0;
//}
//#include<stdlib.h>
//#include<iostream>
//using namespace std;
//typedef int STadtatype;
//class stack
//{
//public:
//	stack(int n=4)
//	{
//		_a = (STadtatype*)malloc(sizeof(STadtatype) * n);
//		if (_a==nullptr)
//		{
//			perror("mallloc fail!");
//			exit(1);
//		}
//		_capacity = n;
//		_top = 0;
//	}
//	~stack()
//	{
//		free(_a);
//		_a = nullptr;
//		_top = _capacity = 0;
//
//	}
//private:
//	STadtatype* _a;
//	size_t _capacity;
//	size_t _top;
//
//};
//class Mequeue
//{
//public:
//private:
//	stack _popst;
//	stack _poshst;
//};
//
//int main()
//{
//	Mequeue qe;
//
//	return 0;
//}
//日期类实现
//#include<iostream>
//using namespace std;
//class date
//{
//public:
//	void print()
//	{
//		cout << _year << "  " << _month << "  " << _day << endl;
//	}
//	void init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//private:
//	int _year;//内部对象一般加_;
//	int _month;
//	int _day;
//};
//int main()
//{
//	date d1;//实例化对象
//	date d2;
//	d1.init(2025, 4, 21);//初始化用对象.内部的成员函数
//	d2.init(2025, 5, 20);
//	d1.print();
//	d2.print();
//	return 0;
//}
//构造函数
//class Date
//{
//public:
//	void print()
//	{
//		cout << _year << "/" << _month << "/" << _day << endl;
//	}
//	/*void init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}*/
//	//构造函数可以重载
//	/*Date()
//	{
//		_year = 1;
//		_month = 1;
//		_day = 1;
//	}*/
//	Date(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	//拷贝构造d2(d1)
//	Date(const Date& d)
//	{
//		_year = d._year;
//		_month = d._month;
//		_day = d._day;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
////解决内部的成员不可以访问
////1.写函数来get成员
////2.友元
////3.最近放到类里面
//bool operator== (Date& x1, Date& x2)
//{
//	return(x1._year == x2._year && x1._month == x2._month && x1._day == x2._day);
//}
////不写构造就编译器自己初始化
//int main()
//{
//	/*Date d1;
//	d1.print();*/
//	//Date d2(2025, 01, 25);
//	//d2.print();
//	Date d1(2005, 03, 35);//构造
//	Date d2(d1);//拷贝构造
//	//Date d2 = d1;//拷贝构造
//	cout << (d1 == d2) << endl;
//	d1.print();
//	d2.print();
//	return 0;
//}
/////////////////////////////////////////////////////////////
//#include<iostream>
//#include"date.h"
//using namespace std;
//
////int operator-(const Date& x);
////Date operator+(int day);
//
//bool Date::operator== (const Date& x)
//{
//	return(_year == x._year && _month == x._month && _day == x._day);
//}
//void Date::print()
//{
//	cout << _year << "/" << _month << "/" << _day << endl;
//}
//Date& Date::operator+=(int day)
//{
//	_day += day;
//	while (_day> Date::getmonday(_year, _month))
//	{
//		_day -= Date::getmonday(_year, _month);
//		_month++;
//		if (_month == 13)
//		{
//			_year++;
//		}
//	}
//	return *this;
//}
//Date Date::operator+(int day)
//{
//	Date tem(*this);
//	tem._day += day;
//	while (tem._day > Date::getmonday(tem._year,tem._month))
//	{
//		tem._day -= Date::getmonday(tem._year,tem._month);
//		tem._month++;
//		if (tem._month == 13)
//		{
//			tem._year++;
//		}
//	}
//	return tem;
//}
//Date& Date::operator-=(int day)
//{
//	_day -= day;
//	while (_day <= 0)
//	{
//		_month--;
//		if (_month == 0)
//		{
//			_month = 12;
//			--_year;
//		}
//		_day += Date::getmonday(_year, _month);
//	}
//	return (*this);
//}
//Date Date::operator-(int day)
//{
//	Date tmp(*this);
//	tmp -= day;
//	return tmp;
//}
//Date Date::operator-(int day)
//{
//	Date tmp(*this);
//	tmp._day -= day;
//	while (tmp._day <= 0)
//	{
//		tmp._month--;
//		tmp._day += Date::getmonday(tmp._year, tmp._month);
//		if (tmp._month == 0)
//		{
//			tmp._year -= 1;
//			tmp._month = 12;
//		}
//	}
//	return tmp;
//
//}
//d3=d2
//Date Date::operator=(const Date& x)
//{
//	if ( this!= &x)
//	{
//		_year = x._year;
//		_month = x._month;
//		_day = x._day;
//	}
//	return (*this);
//}
//++d1;
//Date& Date::operator++()
//{
//	(*this) += 1;
//	return (*this);
//}
////d1++;
//Date Date::operator++(int)
//{
//	Date tmp(*this);
//	*this += 1;
//	return tmp;
//}
//int Date::operator-(const Date& d)
//{
//	Date max = *this;
//	Date min = d;
//	int flag = 1;
//	if (*this < d)
//	{
//		max = d;
//		min = *this;
//		flag = -1;
//	}
//	int n = 0;
//	while (max != min)
//	{
//		++min;
//		++n;
//	}
//	return n * flag;
//}
//void test1()
//{
	/*Date d1(2025,4,26);
	Date d2 = d1 - 100;
	d1.print();
	d2.print()*/;
//}
//void test2()
//{
//	Date d1(2025, 4, 26);
//	Date d2 = d1 -=10000;
//	d1.print();
//	d2.print();
//}
//void test3()
//{
//	Date d1(2025, 4, 26);
//	Date d2(2005, 7, 7);
//	
//}
//int main()
//{
	//test1();
	//test2();
	//test3();
	/*Date d1(2025,4,26);
	Date d2(2005,7,7);
	cout << d1 - d2 << endl;
	return 0;*/
//}
//#include<iostream>
//using namespace std;
//class Time 
//{
//public:
//	Time(int hour = 1)
//		:_hour(hour)
//	{
//		cout << "Time" << endl;
//	}
//private:
//	int _hour;
//};
//class Date {
//public:
//	Date(int&x,int year = 1, int month = 1, int day = 1)
//		//初始化列表
//		:_t(2)
//		,d1(x)
//		,m1(20)
//		, _month(month)
//		, _day(day)
//	{
//		//里面写函数的一些东西
//		_year = year;
//	}
//private:
//	int _year=2000;//缺省值
//	int _month=1;
//	int _day;
//	int& d1;
//	const int m1;
//	Time _t;
//};
//int main()
//{
//	int xx = 0;
//	Date dd(xx, 2005);
//	return 0;
//}
//#include<iostream>
//using namespace std;
//class A {
//public:
//	//explicit A(int a)//无法支持转换
//	A(int a)
//		:_a(a)
//	{ }
//	//explicit A(int a,int b)
//	A(int a, int b)
//		:_a(a)
//		,_b(b)
//	{ }
//private:
//	int _a;
//	int _b;
//};
//int main()
//{
//	A aa1 = 1;//隐式类型转换
//	A aa2 = { 1,1 };
//	return 0;
//}
//#include<iostream>
//using namespace std;
//class B;
//class A {
//public:
//	friend class B;//友元类
//	A(int a)
//		:_a(a)
//	{}
//	void print()
//	{
//		cout << _a << endl;
//	}
//private:
//	int _a;
//};
//class B
//{
//public:
//	B(int hour)
//		:_hour(hour)
//	{ }
//	void print(const A& aa)
//	{
//		cout << aa._a <<"  "<< _hour << endl;
//	}
//private:
//	int _hour;
//};
//int main()
//{
//	A aa1=2;
//	B bb1(1);
//	bb1.print(aa1);
// return 0;
//}
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
	int arr[] = { 10,50,20,80,90,11,15,19 };
	//排降序
	//greater<int> gt;
	sort(arr, arr + 8,greater<int>());
	return 0;
}